﻿using Activity.II;
using System.Windows.Forms;

namespace Activity.III
{
	public partial class Window : II.Window
	{
		public Window ()
		{
			InitializeComponent();
		}

		/// <summary>
		/// Создать новый экземпляр ПК.
		/// </summary>
		public override PC CreatePC (string name, string description)
		{
			var computer = base.CreatePC(name, description);
			// Подписываемся на событие
			computer.SystemCrash += OnSystemCrash;
			return computer;
		}

		/// <summary>
		/// Создать новый экземпляр мейнфрейма.
		/// </summary>
		public override Mainframe CreateMainframe (string name, string description)
		{
			var computer = base.CreateMainframe(name, description);
			// Подписываемся на событие
			computer.LoadWarning += OnLoadWarning;
			return computer;
		}

		/// <summary>
		/// Отклик на событие системной ошибки.
		/// </summary>
		private static void OnSystemCrash (object sender, string error)
		{
			var computer = (PC)sender;
			MessageBox.Show(string.Format("Сбой системы на сервере {0}!\n{1}", computer.Name, error), "Критическая ошибка!");
		}

		/// <summary>
		/// Отклик на событие перегрузки.
		/// </summary>
		private static void OnLoadWarning (object sender, float load)
		{
			var computer = (Mainframe)sender;
			MessageBox.Show(string.Format("Критическая нагрузка на сервере {0}: {1:00}%", computer.Name, load * 100), "Предупреждение!");
		}
	}
}
